contract updates over %t determines %e is {
  _assign_ has type action(%t);
  _replace_ has type action(ref %t,(%e)=>%e);
};

# update ?Ptn in ?Tgt with ?Exp :: action ==> let{
    #$filter(Ptn) is Exp;
    #$filter(#$X) default is #$X; 
  } in _replace_(Tgt, #$filter);

implementation updates over relation of %e determines %e is {
  _replace_(R,F) do __relation_update(R,F);
}
